/**
 * https://leetcode-cn.com/problems/swap-nodes-in-pairs/
 * 两两交换链表的节点
 * 定一个链表，两两交换其中相邻的节点，并返回交换后的链表。你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 * @param head 
 */
const swapPairs = (head: ListNode | null): ListNode | null => {
    // 链表为空
    if (head === null || head.next === null) return head


    let dummyHead = new ListNode(0, null);
    let prev = dummyHead
    while (head !== null && head.next !== null) {
        const n: ListNode | null = head.next.next;


        // 让上一个指向head.next
        prev.next = head.next


        // 修改指向
        head.next.next = head;
        head.next = n;

        prev = head;

        head = n

    }

    // 返回新节点
    return dummyHead.next
};